/**
 * Created with IntelliJ IDEA.
 * Description :
 * User: $ {USER}
 * Date: $ {YEAR}-$ {MONTH}一$ { DAY}
 * Time: ${ TIME}
 */
import java.util.Arrays;
public class Test {
    public static void main(String[] args) {
        int[] nums = {1,2,2,4};
        System.out.println(Arrays.toString(findErrorNums(nums)));
    }
    public static int[] findErrorNums(int[] nums) {
        // 遍历数组，看哪个元素出现了两次，哪个元素一次也没有出现
        int n = nums.length;
        int[] tmp = new int[n+1];// 必须要加1，否则会导致越界异常
        for (int x : nums) {
            tmp[x]++;
        }
        int[] ret = new int[2];
        // 由于这里的元素范围是[1,n]，因此下标得从1开始
        for (int i=1; i<tmp.length; i++) {
            if (tmp[i] == 0) {
                ret[1] = i;
            }else if (tmp[i] == 2) {
                ret[0] = i;
            }
        }
        return ret;
    }
}
